package model

import (
	"gorm.io/gorm"
	"time"
)

type Order struct {
	Id                uint64         `gorm:"column:id;type:bigint UNSIGNED;primaryKey;not null;" json:"id"`
	UId               uint64         `gorm:"column:u_id;type:bigint UNSIGNED;not null;" json:"u_id"`
	UName             string         `gorm:"column:u_name;type:varchar(30);comment:用户姓名;not null;" json:"u_name"`                                     // 用户姓名
	CardType          string         `gorm:"column:card_type;type:varchar(10);comment:证件类型;not null;" json:"card_type"`                               // 证件类型
	UIdCard           string         `gorm:"column:u_id_card;type:char(18);comment:证件号码;not null;" json:"u_id_card"`                                  // 证件号码
	TId               uint64         `gorm:"column:t_id;type:bigint UNSIGNED;comment:车票id;not null;" json:"t_id"`                                     // 车票id
	TicketType        string         `gorm:"column:ticket_type;type:varchar(3);comment:车票类型: 1火车 2高铁 3飞机 4大巴;not null;" json:"ticket_type"`           // 车票类型: 1火车 2高铁 3飞机 4大巴
	TStart            string         `gorm:"column:t_start;type:varchar(255);comment:车票起始站;not null;" json:"t_start"`                                 // 车票起始站
	TicketTrainNumber string         `gorm:"column:ticket_train_number;type:varchar(255);comment:车次;not null;" json:"ticket_train_number"`            // 车次
	TicketSeatType    string         `gorm:"column:ticket_seat_type;type:varchar(2);comment:座位类型: 1硬座 2软座 3硬卧 4软卧;not null;" json:"ticket_seat_type"` // 座位类型: 1硬座 2软座 3硬卧 4软卧
	ONum              uint64         `gorm:"column:o_num;type:int UNSIGNED;comment:购买数量;not null;" json:"o_num"`                                      // 购买数量
	Price             float64        `gorm:"column:price;type:decimal(10, 2);comment:车票价格;not null;" json:"price"`                                    // 车票价格
	OStatus           string         `gorm:"column:o_status;type:varchar(3);comment:状态 1已支付 2未支付 3已取消 4已退款;not null;" json:"o_status"`                // 状态 1已支付 2未支付 3已取消 4已退款
	CreatedAt         time.Time      `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
	UpdatedAt         time.Time      `gorm:"column:updated_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"updated_at"`
	DeletedAt         gorm.DeletedAt `gorm:"column:deleted_at;type:datetime(3);default:NULL;" json:"deleted_at"`
}

func (o *Order) TableName() string {
	return "order"
}
